#ifndef ITEMWIDGET_H
#define ITEMWIDGET_H

#include "src/core/scene/material.h"
#include "src/core/generic/vector3.h"

class ItemWidget
{
public:
  enum Lists {Lit, LitFast, Unlit, UnlitFast };
  enum PolygonMode {Fill, Points, Lines };

  ItemWidget() {}
  virtual void update() = 0;
  virtual void setPolygonMode(PolygonMode mode = Fill) {}
  virtual void setLineWidth(const float width = 1.0) {}
  virtual void setPointSize(const float size = 1.0) {}
//  virtual void addLight(const Light& light) {}

  virtual void startList(Lists l) {}
  virtual void endList() {}

  // some methods for selection mechanism
  virtual void markBegin() {}
  virtual void markEnd() {}

  virtual void drawSphere(const Vector3& center, const float radius, const Material& mat, const int detail = 5) = 0;
  virtual void drawCylinder(const Vector3& from, const Vector3& to, const float radiusFrom, const float radiusTo, const Material& mat, const int detail = 5 ) = 0;
  virtual void drawCone(const Vector3& from, const Vector3& to, const float radius, const Material& mat, const int detail = 5) = 0;
  virtual void drawParallelepiped(const Vector3& vertex, const Vector3& a, const Vector3& b, const Vector3& c, const Material& mat ) = 0;
};

#endif // ITEMWIDGET_H
